import com.alibaba.moco.*
import com.alibaba.dto.*
import com.alibaba.moco.util.*
import script.moco.dto.*;
import redis.clients.jedis.*
import groovy.json.*

//模拟司机接单
def excute(data){

	def slurper = new JsonSlurper();		
	Jedis redis = RedisPoolInstance.getRedisClient();

    def params = data.getParameterMap();
	def request = BaseTypeUtil.mapToBean(params,AcceptOrderRequest.class) as AcceptOrderRequest;//请求数据转换为对象
	
	def response = new AcceptOrderResponse();//定义响应对象

	def jsonStr = redis.get(request.getOrderId());							//从 Redis中获取 json 订单字符串	
	if(jsonStr==null){														//验证订单是否存在
		response.setSuccess("false");
		response.setErrorMsg("订单id不存在 !");
		response.setErrorCode(39001);
		response.setErrorLevel(1);
		
		return response;
		
	}
	System.out.println(jsonStr)
		
	def detailMap = slurper.parseText(jsonStr);	//从json字符串变成json对象
	
	if (!detailMap.containsKey("order")){
		response.setSuccess("false");
		response.setErrorMsg("订单不存在 !");
		response.setErrorCode(39001);
		response.setErrorLevel(1);
		
		return response;
	}
	
	def jsonMap = detailMap.get("order");				
	def taxiObj = BaseTypeUtil.jsonToBean(jsonMap,OrderInfo.class) as OrderInfo;		//将json对象转换为TaxiRequest对象
	
		//司机接单完善数据
		taxiObj.setStatus(400);
		taxiObj.setSub_status(4001);
		taxiObj.setId(request.getOrderId());				//订单ID
		taxiObj.setDriver_name(request.getDriverName());			//司机名称
		taxiObj.setDriver_phone(request.getDriverPhone());		//司机号码
		taxiObj.setDriver_card(request.getDriverLicense());	//司机车牌号码
		taxiObj.setDlng(request.getDriverLongitude());	//司机经度
		taxiObj.setDlat(request.getDriverLatitude());	//司机纬度
		taxiObj.setDriver_level(String.valueOf(request.getDriverComment()));	//司机评价
		//taxiObj.setDriver_goodCount(request.getDriverGoodCount()); 	//司机好评数
		//taxiObj.setDriver_geotype(request.getDriverGeotype());	//司机坐标类型
		taxiObj.setDriver_car_type(request.getDriverCarType());	//司机车型	
		
		detailMap.put("order", taxiObj)
		redis.set(taxiObj.getId(), JsonOutput.toJson(detailMap).toString())	//直接覆盖原有数据，进行修改
		
		//司机接单完成后进行回调
		def callbackObj = new CallbackRequest();
		callbackObj.setClientId("1");
		callbackObj.setOrderId(taxiObj.getId());
		callbackObj.setNotifyType(1);
		callbackObj.setNotifyDesc("订单中间状态流转[司机接单(等待接驾)]");
		callbackObj.setTimestamp(System.currentTimeMillis());
		callbackObj.setSign("123");
		
		
		
	HttpClientUtil.post(callbackObj);	
		
	response.setSuccess("true");
	response.setErrorMsg(null);
	response.setErrorCode(0);
	response.setErrorLevel(0);
	response.setContent(null);
		
    return response;
}